home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
assemblr
/
library
/
screen
/
uniform
/
ufas012.asm
< prev
next >
Wrap
Assembly Source File
|
1993-07-28
|
3KB
|
126 lines
;MASM/ MS Quick ASM/ TASM
;ufas12.asm - example file shows a menu
;
STRETCPY MACRO ZADR, SADR, LEN
cld ;; increment
lea di,ZADR ;; target adress
lea si,SADR ;; source adress
mov cx,LEN ;; length
rep movsb
ENDM
UFCALLK MACRO OKZ, OFN, OFL, ORETC, OSM, ODAT
lea bx,OKZ ;; Offset FKZ
push bx
lea bx,OFN ;; Offset format
push bx
lea bx,OFL ;; Offset 1. field
push bx
lea bx,ORETC ;; Offset RETC
push bx
lea bx,OSM ;; Offset SM
push bx
lea bx,ODAT ;; Offset Daten
push bx
call UNIF ;; call UNIF
add sp,12
ENDM
DOSSEG
TITLE example
EXTRN UNIF:NEAR
EXTRN MOUSEON:NEAR
EXTRN MOUSEOFF:NEAR
.MODEL SMALL
.STACK 1024h
.DATA
INCLUDE menu01.mac
INCLUDE menu02.mac
INCLUDE menu03.mac
INCLUDE ufas01.mac
menu01 DB "menu01 "
menu02 DB "menu02 "
menu03 DB "menu03 "
const1 DB "Functions "
const2 DB "Programend"
const3 DB "file new F1 "
const4 DB "file open F2 "
const5 DB "file delete F3 "
const6 DB "program end F10 "
.CODE
mov ax,@data ; DS initialisieren
mov ds,ax
push ds ; DS und ES gleichsetzen
pop es
; save screen, initialize mouse
call MOUSEON
mov word ptr FKZ,0
UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
; display <menu01>
STRETCPY fld0,const1,10
STRETCPY fld1,const2,10
aus_menu01:
mov word ptr FKZ,2
mov word ptr SM,0
mov word ptr RETC,0
UFCALLK FKZ, menu01, fld0, RETC, SM, Amenu01
cmp word ptr RETC,200 ; display <menu02>
je a200
cmp word ptr RETC,201 ; program end
je H1
jmp aus_menu01 ; ignore input
H1: jmp ende
a200: ; display <menu02>
STRETCPY fld2,const3,30
STRETCPY fld3,const4,30
STRETCPY fld4,const5,30
STRETCPY fld5,const6,30
mov word ptr FKZ,2
mov word ptr SM,0
mov word ptr RETC,4
aus_menu02:
UFCALLK FKZ, menu02, fld2, RETC, SM, Amenu02
cmp word ptr RETC,200 ; first menuitem
je a210
cmp word ptr RETC,101 ; first menuitem (F1)
je a210
cmp word ptr RETC,201 ; second menuitem
je a210
cmp word ptr RETC,102 ; second menuitem (F2)
je a210
cmp word ptr RETC,202 ; third menuitem
je a210
cmp word ptr RETC,103 ; third menuitem (F3)
je a210
cmp word ptr RETC,203 ; fourth menuitem
je ende
cmp word ptr RETC,110 ; fourth menuitem (F10)
je ende
mov word ptr FKZ,3 ; ignore input
mov word ptr RETC,4
jmp aus_menu02
a210: ; display empty format <menu03>
mov word ptr FKZ,4
mov word ptr SM,0
mov word ptr RETC,4
UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
jmp aus_menu01;
ende: call MOUSEOFF
mov word ptr FKZ,5
UFCALLK FKZ, menu03, fld0, RETC, SM, Amenu03
mov ah,4ch ; program end
mov al,0h ; error level 0
int 21h
END